#include <stdio.h>
#include <constants.h>
#include <config.h>

unsigned int reportFrequency, maxReport, httpPort;

char serverName[LEN_SERVERLIST][LEN_SERVERNAME];
char serverAdress[LEN_SERVERLIST][LEN_SERVERADRESS];

unsigned int ConfReportFrequency(){
	return reportFrequency;
}

unsigned int ConfMaxReport(){
	return maxReport;
}
unsigned int ConfHttpPort(){
	return httpPort;
}

char* ServerName(unsigned int index){
	return serverName[index];
}

char* ServerAdress(unsigned int index){
	return serverAdress[index];
}

void ReadConfig(){

	reportFrequency = maxReport = httpPort = 0;	

	FILE* pf;
	pf=fopen(FILE_CONFIG, "r");
	if(pf==NULL){
		LogError("Impossible d'ouvrir le fichier de configuration", 1);
	}

	char name[64];
	char data[64];
	int ret;

	while((ret=fscanf(pf, "%[^:]:%[^\n]\n", name, data))==2){
		if(strcmp(name, "ReportFrequency")==0){
			reportFrequency = atoi(data);
		}else if(strcmp(name, "MaxReport")==0){
			maxReport = atoi(data);
		}else if(strcmp(name, "HttpPort")==0){
			httpPort = atoi(data);
		}else{
			close(pf);
			LogError("Le fichier de configuration est mal formaté",1);		
		}
	}
	if(ret!=EOF || reportFrequency < 30 || maxReport < 1 || maxReport > 9999 || httpPort < 1 ){
		close(pf);
		LogError("Fichier de configuration incohérent ou incomplet",1);	
	}
	close(pf);
	return;
}

void ReadServerList(){
	int i;	

	for(i=0; i<LEN_SERVERLIST; ++i){
		serverName[i][0] = '\00';
		serverAdress[i][0] = '\00';
	}

	FILE* pf;
	pf=fopen(FILE_LIST, "r");
	if(pf==NULL){
		LogError("Impossible d'ouvrir le fichier des servers", 2);
	}

	char name[LEN_SERVERNAME];
	char adress[LEN_SERVERADRESS];
	int ret;

	while((ret=fscanf(pf, "%[^:]:%[^\n]\n", name, adress))==2){
		if(strlen(name)>LEN_SERVERNAME-1 || strlen(adress)>LEN_SERVERADRESS-1){
			LogError("Des données du fichier des servers sont trop volumineuses", 2);
		}

		for(i=0; i<LEN_SERVERLIST; ++i){
			if(serverName[i][0]=='\00'){
				strcpy(serverName[i],name);
				strcpy(serverAdress[i],adress);
				break;
			}
		}
		if(i==LEN_SERVERLIST){
			LogError("Trop de servers sont présents dans le fichiers des servers", 2);
		}
	}
}
